<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script>

//【示例1】null和undefined都表示缺少值，都是假值，可以相等。
alert(null == undefined);			// 返回true

alert(null === undefined); 		// 返回false
alert(typeof null); 				// 返回"object"
alert(typeof undefined); 			// 返回"undefined "
//【示例2】检测一个变量是否被初始化，可以借助undefined值进行快速检测。
var a;								// 声明变量
alert(a);							// 返回变量默认值为undefined
(a == undefined) && (a = 0); 		// 检测变量是否初始化，否则为其赋值
alert(a); 							// 返回初始值0

//【示例3】在下面代码中，声明了变量a，而没有声明变量b，然后使用typeof运算符检测它们的类型，返回的值都是字符串"undefined"。说明不管是声明，还是未声明的变量，都可以通过typeof运算符检测变量是否初始化。
var a; 
alert(typeof a); 				// 返回"undefined"
alert(typeof b); 				// 返回"undefined"

alert(b == undefined); 			// 提示未定义的错误信息

//【示例4】对于函数来说，如果没有明确的返回值，则默认返回值都为undefined。
function f(){
}
alert(f());							// 返回"undefined"

//【示例5】在IE 5及其以下版本中，除了直接赋值和typeof运算符外，其他任何运算符对undefined的操作都会引发异常。不过，用户可以声明undefined变量，然后查看它的值，如果为undefined，则说明浏览器支持undefined值。
var undefined;
alert(undefined); 					// 返回"undefined"，说明浏览器支持

var undefined = void null;

var undefined = void 1;

var undefined = function(){}();
alert(undefined); 					// 返回"undefined"

//【示例6】在IE 5及其以下版本中，可以使用typeof运算符来检测某个变量的值是否为undefined：
var a;
if(typeof a == "undefined"){
    // 执行代码
}
//如果在IE 5.5及其以上版本浏览器中，undefined已经被定义为全局变量，作为一个关键字被JavaScript支持。因此检测一个值是否为undefined，可以直接进行比较：
var a;
if(a == undefined){
    // 执行代码
}

</script>
</head>
<body>
</body>
</html> 
